package com.yaoq.strategy.improve;

/**
 * @ClassName Client
 * @Description 策略模式
 * 关键是：分析项目变化和不变的地方
 * 核心是多用组合、聚合。少用继承，用行为类组合代替行为的继承
 * 客户端增加行为不用修改原来的代码，只要添加一种策略就行避免if else
 * @Author yaoqiang
 * @Date 2020/9/4 15:24
 * @Version 1.0
 */
public class Client {
    public static void main(String[] args) {
        //new一个野鸭对象
        WildDuck wildDuck = new WildDuck();
        //调用野鸭飞的方法
        wildDuck.fly();

        PekingDuck pekingDuck = new PekingDuck();
        pekingDuck.fly();

        //动态的改变某个对象的行为，北京鸭不能飞
        pekingDuck.setFlyBehavior(new NoFlyBehavior());
        System.out.println("北京鸭实际的飞翔能力");

    }
}
